/**
*	bootstrap button 事件公共js模块
*   @Author jackson wang
*   @date 2016-09-022
*   @version 1.0
*
*/

define(["jquery",'init','bsMsgServ','jqueryValidate','datagridServ'], 
	function($,init,bsMsgServ,jqueryValidate,datagridServ) {
	
	'use strict';
	
	var queryUrl = '/' + init.getSite()
							+ '/oaHighvalueSub/getListDomain.action';
							
	var rootid = 'oa-high-value';
	
	var window_id = 'oa-highvalue-win';
	
	var form_table_id = 'supply_sub_info';
	
	//编辑行号变量
	var editIndex = -1;
	
	
	//回调函数
	var callback ={
		callbackFunc: null,		//回调函数
		
		
		row:null //传入列表数据
	};
	
	

	var gridParam = {
		
		
//		onClickCell : private_method.editCell,
		columns : [[{
					field : 'ck',
					checkbox : "true"
				},
				{
					field : 'supplier_name',
					title : '供应商',
					width : 100,
					align : 'center',
					halign : 'center',
					editor : 'text'
				},
				{
					field : 'supply_name',
					title : '耗材名称',
					align : 'center',
					halign : 'center',
					width : 30,
					editor : 'text'
				}, {
					field : 'specification_model',
					title : '型号',
					width : 30,
					align : 'center',
					halign : 'center',
					editor : 'text'
				}, {
					field : 'measurement_units',
					title : '单位',
					width : 30,
					align : 'center',
					halign : 'center',
					editor : 'text'
				}, {
					field : 'purchase_num',
					title : '数量',
					width : 30,
					align : 'center',
					halign : 'center',
					editor : 'text'
				}, {
					field : 'purchase_price',
					title : '进货价格',
					width : 30,
					align : 'center',
					halign : 'center',
					editor : 'text'
				}
//				{
//					field : 'serial_number',
//					title : '流水号',
//					width : 30,
//					align : 'center',
//					halign : 'center',
//					editor : 'text'
//				}, 
				]],
		rownumbers : true,
		animate : true,
		striped : true,
		border : true,
		idField : 'id',
		fitColumns : true
//		toolbar: [{
//			iconCls: 'icon-add',
//			handler: btnEvent.addRow
//		},{
//			iconCls: 'icon-remove',
//			handler: btnEvent.delRow
//		}]

	};
	
	//子表头html
	var listHtmlHead = '<table class="table table-striped dg-list">'+
            		'<thead>'+
		                '<tr>'+
		                  '<th class="col-md-4">供应商</th>'+
		                  '<th class="col-md-3">耗材名称</th>'+
		                  '<th class="col-md-1 placeholder">型号</th>'+
		                  '<th class="col-md-1 placeholder">单位</th>'+
		                  '<th class="col-md-1 placeholder">数量</th>'+
		                  '<th class="col-md-1 placeholder">单价</th>'+
//		                  '<th class="col-md-1 placeholder">小计</th>'+
		                '</tr>'+
              		'</thead>';

    //子表foot节html
    var listHtmlFoot = '<tbody>'+
              		'</tbody>'+
            	'</table>';
	
	var public_method = {
		
		/**
		 * 初始化编辑页面
		 * @param _options.row			业务数据对象
		 * @param _options.permission	子表权限
		 * @param _options.callbackFunc	回调函数
		 */
		initSubList:function(_options){
			
			//缓存传入参数
			callback = _options;
			editIndex = -1;
			//初始化子表权限
			public_method.initSubBtn(_options);
			
			//初始化子表列表
			public_method.initList(_options);
		}
		,
		
		/**
		 * 初始化子表操作按钮
		 * @param _options.permission
		 */
		initSubBtn:function(_options){
			
			var _el = $('#'+ rootid + ' .sub-list-btn')
			var _html = 
				'<button type="button" class="btn btn-warning btn-sm" btn-type="listAdd"></span>耗材清单</button>';
				
			_el.append(_html);
			var _subbtn = $('#'+ rootid + ' .sub-list-btn .btn');
			if(_subbtn.length>0){
				_subbtn.unbind('click');
				_subbtn.bind("click",btnEvent.openSubPage);
			}
			
		}
		,
		/**
		 * 初始化模块子表
		 * 
		 * @param _options.row  	数据对象
		 */
		initList:function(_options){			
			
			var subData = []
			//判断子表对象
			var _el = $('#'+ rootid + ' .sub-list-datagrid')
			if(_el.length==1){
				
				//获取子表数据
				subData = private_method.getListTableData();
				
				//生成子表html文本
				var htmlBody = listHtmlHead + 
							   private_method.fitTableData(subData) + 
							   listHtmlFoot;
				_el.empty();
				_el.append(htmlBody);
			}
			
			//回写子表数据
			var _jsonData = $.toJSON(subData)
//			callback.row[form_table_id]=_jsonData;				
				
			//回写子表数据
			callback.callbackFunc({field:form_table_id,value:_jsonData});
				
		}
	}
	
	var btnEvent= {
		openSubPage:function(evt){
			private_method.showSubPage();
		}
		
		,
		listAdd:function(e){
			var _dg =$('#'+window_id+ ' .dg-list')
			if(_dg.length>=1){
				_dg.datagrid('appendRow',{})
			}
			$(e.currentTarget).removeClass('disabled');
		}
		,
		listDel:function(e){
			var _dg =$('#'+window_id+ ' .dg-list')
			if(_dg.length>=1){
				var _rows =	_dg.datagrid('getSelections');
				if(_rows.length>0){
					var _index = -1;
					for(var i=_rows.length;i--;i>=0){					
						 _index = $(_dg).datagrid('getRowIndex',_rows[i]);
						 if(_index>=0){
							$(_dg).datagrid('deleteRow',_index);
						 }
					}
				}				
			}
			$(e.currentTarget).removeClass('disabled');
		}
	}
	
	var private_method = {
		btnClick:function(e){
    		
    		init.applyBtnEvt({btnEvt:e,btnConfig:btnEvent})
//    		bsMsgServ.msgSlide();
    	}
    	,
		editCell:function(index,field,value){
			
			var _dg =$('#'+window_id+ ' .dg-list')
			if(editIndex>-1 && (editIndex!=index)){
				_dg.datagrid('acceptChanges');
				_dg.datagrid('endEdit',editIndex);							
			}
			
			_dg.datagrid('beginEdit',index);
				editIndex = index
		}
		,
		/**
		 * 根据传入的id值，获取(传入/查询)子表数据
		 * 优先获取传入的子表数据，在传入子表数据为空时且主表id不为空时，
		 * 查询主表对应的子表数据
		 * 
		 * @return 返回子表数据集合
		 */
		getListTableData:function(){
			
			var _data =[];
			
			if(callback &&　callback.row){
				
				//判断子表数据是否已存在
				if(callback.row[form_table_id]){
					_data = $.toJSON(callback.row[form_table_id])
				}else{
				//子表数据不存在，查询后台
			
					if(callback.row.id){
						
						//后台查询子表内容
						$.ajax({
							url: 	queryUrl,
							async: 	false,
							data: 	{mainId:callback.row.id},
							success: function(data){
								if(data && data.rows)
									_data = data.rows;							
							}
						})
					}
				}
			}
			
			return _data;
		}	
		
		,
		/**
		 * 根据传入的数据集合对象，
		 * 获取编辑页面子表数据html字符串
		 * @param data	子表数据集
		 * @return 返回子表html文本
		 */
		fitTableData:function(data){
			
					
			var _html ='';
			if(data){
					
				$.each(data,function(i,o){
					_html += '<tr class="data-row">'+							
					'<th class="col-md-4">'+o.supplier_name+'</th>'+//供应商名称
                  	'<th class="col-md-3">'+o.supply_name+'</th>'+//耗材名称
                  	'<th class="col-md-1 placeholder">'+o.specification_model+'</th>'+//型号
                  	'<th class="col-md-1 placeholder">'+o.measurement_units+'</th>'+//单位
                  	'<th class="col-md-1 placeholder">'+o.purchase_num+'</th>'+//数量
                  	'<th class="col-md-1 placeholder">'+o.purchase_price+'</th>'+//单价
//                  	'<th class="col-md-1 placeholder">'+o.purchase_amount+'</th>'+//小计
                  	'</tr>'
				})
				
			}
			return _html;
				
		}
		,
		/**
		 * 弹窗显示子表页面
		 */
		showSubPage:function(_options){
			
			//弹窗
			var winobj = $('#'+window_id).window({
				title: '耗材清单',
				width:600,    
				height:400,    
				modal:true,
				onClose:private_method.onclose
			})
			//增加按钮
			var _btn = 
				'<div>' +
				'<button type="button" class="btn btn-default btn-sm" btn-type="listAdd"><span class="glyphicon glyphicon-plus"></span> 新增</button>'+
				'<button type="button" class="btn btn-default btn-sm" btn-type="listDel"><span class="glyphicon glyphicon-remove"></span> 删除</button>' +
				'</div>'
			winobj.append(_btn);
			
			$('#'+window_id + ' button').bind('click',private_method.btnClick);
			
			//增加窗口datagrid对象
			winobj.append("<div class='dg-list'></div>")
			
			//定位窗口内部datagrid对象
			var $dg = winobj.find(' .dg-list');
			
			//创建窗口内部datagrid
			if($dg.length==1){
				gridParam.onClickCell = private_method.editCell;
				
				var _data = []
				if(callback.row[form_table_id]){
					//form中已有子表数据
					_data = $.evalJSON(callback.row[form_table_id]);					
				}else{
					//是否存在主表id(主表是否已保存)
					if(callback.row.id){
						//根据主表id查找子表信息
						_data = private_method.getListTableData(callback.row.id);
					}
				}
				
				gridParam.data = _data;
				$dg.datagrid(gridParam);				
				
			}
		}
		,
		
		onclose:function(){
			var _dg = $('#'+window_id + ' .dg-list')
			if(_dg.length>0){
				
				_dg.datagrid('acceptChanges');
				_dg.datagrid('endEdit',editIndex);
				var _data = _dg.datagrid('getData')
				var _jsonData = ''
				
				var _el = $('#'+ rootid + ' .sub-list-datagrid')
				//清除编辑页面原有子表数据
				if(_el.length==1){
					_el.empty();
				}
				
				//子表数据不为空
				if(_data && _data.rows){					
					
					//刷新编辑页子表					
					if(_el.length==1){						
						var htmlBody = listHtmlHead + 
									   private_method.fitTableData(_data.rows) + 
									   listHtmlFoot;
						
						_el.append(htmlBody);
					}
					
					_jsonData = $.toJSON(_data.rows)
					callback.row[form_table_id]=_jsonData;
				}
				
				//回写子表数据
				callback.callbackFunc({field:form_table_id,value:_jsonData});
				
			}
			$('#'+window_id + ' button').unbind('click');
			$('#'+window_id).empty();
		}
	}
	
	return public_method;
})